﻿// ==UserScript==
// @name ISP_mon
// @description Open SSH from ISP monitoring system
// @author yumaa@ispsystem.com
// @include https://mon.ispsystem.net/
// ==/UserScript==

(function() {
if (window.location.hostname != 'mon.ispsystem.net') return;

	// ssh логин на vds сервера
	var vdsssh = ujsGetCookie('ujsssh');
	if ( vdsssh.replace(/\s*/,'') != '' ) vdsssh += '@'; else vdsssh = '';
	
	var ssh = 'ssh:$&';
	var sshp = 'ssh:'+vdsssh+'$&';
	var sshv = 'sshv:'+vdsssh+'$1|$4';
	var clip = 'clip:$&';
	
	var sshimg = '<img src="" width="16" height="13" />';
	var sshvimg = '<img src="" width="16" height="16" />';
	var clipimg = '<img src="" width="15" height="13" />';
	
	var sshlnk = '<a href="'+ssh+'">'+sshimg+'</a>';
	var sshplnk = '<a href="'+sshp+'">'+sshimg+'</a>';
	var sshvlnk = '<a href="'+sshv+'">'+sshvimg+'</a>';
	var cliplnk = '<a href="'+clip+'">'+clipimg+'</a>';
	
	// рисуем ссылочку me чтобы указать логин
	opera.addEventListener('BeforeEvent.DOMContentLoaded', function(e) {
		var firstel = $class('show')[0];
		if ( !firstel ) return;
		firstel.innerHTML = '<span id=ujsvdslogin title=' + vdsssh.match(/[^@]*/) + '>me</span> ' + firstel.innerHTML;
		var mebtn = $id('ujsvdslogin');
		mebtn.onclick = function () {
			ujsPrompt('Введите ваш SSH логин на VDSные сервера', vdsssh.match(/[^@]*/), 'ujsssh');
		}
	}, true);
	
	// по двойному клику добавляются иконки
	document.addEventListener('dblclick', function(e) {
		var warnTable = $class('warnTable')[0];
		if ( !warnTable ) return;
		// all IP addresses
		warnTable.innerHTML = warnTable.innerHTML.replace(/\d+\.\d+\.\d+\.\d+(?=\s)(?!\s+<)/g, '$& '+sshlnk+' '+cliplnk);
		// all VDSes
		warnTable.innerHTML = warnTable.innerHTML.replace(/((msk|bru|nyk)-\d{1,}\.ispsystem.net)([^\d]+)(\d+\.\d+\.\d+\.\d+)(?=\.)(?!\s+<)/g, '$1$3$4 '+sshvlnk);
		// all VDS parents
		warnTable.innerHTML = warnTable.innerHTML.replace(/(msk|bru|nyk)-\d{1,}\.ispsystem.net(?=\))(?!\s+<)/g, '$& '+sshplnk+' '+cliplnk);
		// all domains
		warnTable.innerHTML = warnTable.innerHTML.replace(/[\w-]+\.\w{2,4}(?=\))(?!\s+<)/g, '$& '+cliplnk);
	}, true);
})();
